1. Field of the Invention
This invention relates generally to object-oriented environments, and in particular to a graphical user interface for an object-oriented modelling tool.
2. Description of Related Art
In object-oriented modelling tools, there is often a need to graphically create and display classes, objects, and attributes in the object model. Graphical user interface (GUI) applications exist that allow a user to create objects such as files, classes, documents, and pictures, and to further specify values for attributes of these objects. The user sees the names or some rudimentary graphical representation of all the objects in one context, and a detailed view of each object in a different context. When there is a large number of objects, it is impractical for GUI applications to show all the details of all objects in the same view or window. GUI developers must fabricate views to show all objects in one window, and information specific to a given object in another window. In order to assist users in viewing the object model, current modelling tools either have several windows, one for each object, or one window divided into several panes.
The first approach has the user perform the action of opening a view of an object, and having a new window created to display the view information for that object. Selecting the open action for another object results in opening another separate window for the second object. A window displays information for a single specific object during its entire existence (from creation to its closing). If the underlying object is deleted, the window becomes invalidated and is usually closed upon the deletion of the object. Opening views for three objects results in three new windows each containing the view of one of the objects. If a view of an object is opened, a new window opens even if there is a similar view already open for the same object.
There are many shortcomings of a design tool having one object per view in an object model having many homogeneous objects and where the user is constantly adding and updating the details of many objects in a random order. The screen is limited by how many such views can be displayed comfortably on it at the same time, and every open action results in a new window covering an area of the screen. It takes time to create each view since the window may have several GUI controls. For example, a notebook view may contain many pages and there may be many GUI controls in each page. The creation and destruction of such a view each time may be costly. Since the windows may overlap or completely cover other windows, it takes time and effort by the user to switch from one object's view to a view of another object. Views are opened in some default manner, which results in showing the top most page of a document or in the case of notebooks, for example, notebooks are usually opened with the first (left most or top most) page as the top page. If the user wants to check some specific information which is located at some page of the notebook or the view, for several objects, the user has to open a view for each of these objects in turn, and for each opened view the user needs to scroll to the place containing the information of interest, or, in the case of a notebook, click on the tab of the page which contains the information of interest.
The second approach is to show several panes within the GUI application window. One pane shows the list of all objects, and another pane shows information for an object. Selecting an object in the first pane results in the object's information shown in the other pane. There are many shortcomings of a design tool having multiple panes in an object model having many objects. The same window contains the list view having a list of the objects and the object's information view. All communication between the views is intra-window. There is no way to separate these views into separate windows, and there is usually no way to create or open another view of either just the list or just the object's information view. Sometimes the user can open another window which contains all of these views or panes. The GUI application window area needs to be divided into -smaller areas (instead of having independent windows, each being possibly as big as the screen), so less information may be displayed in each. These panes are always in the same orientation to each other and when one moves they all move respectively (instead of being manipulated independently). The panes implementation usually does not allow opening another view of just the information in one of its panes. It may allow duplication of the whole window, which will then contain information that the user is not interested in. When one pane increases in size, another pane will have to decrease in size since all panes have to fit in the same window size. It may be impossible to set the sizes of each pane as the user would ideally desire. This is dependent on the number of panes and their orientation. Although a GUI designer may want to partition the information in an object into several sets, such as attributes set, methods set, etc., so the user does is not overwhelmed by all the information for a given object being presented in the same pane, there may be a need to see all aspects of a few of these sets whenever a different object is selected. One way to accomplish this is to create a pane for each set. This again reduces the size of each pane and the amount of information it may be able to display on the screen, and often not all panes are always needed by the user.